package br.com.manutencao.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;

import br.com.manutencao.entities.Maquina;
import br.com.manutencao.entities.Setor;
import br.com.manutencao.repositories.MaquinaRepository;
import br.com.manutencao.repositories.SetorRepository;

@ManagedBean(name="maquina")

public class MaquinaBean implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	private MaquinaRepository repositorio = new MaquinaRepository();

	private SetorRepository setorRepository = new SetorRepository();
	
	private String nome;
	
	private String descricao;
	
	private List<Maquina> tabelaMaquinas = new ArrayList<Maquina>();
	
	private Integer maquinaId;
	
	private Integer setor2;
	
	private Maquina maquina = new Maquina();
	
	private Setor setor = new Setor();
	
	private Collection<SelectItem> maquinas;
	
	private Collection<SelectItem> setores;
	
	public String salvaMaquina(){
			
		Maquina maquina = new Maquina();
		maquina.setNome(nome);
		maquina.setDescricao(descricao);
		
		setor = setorRepository.buscaPorId(setor2);		
		maquina.setSetor(setor);
		
		repositorio.adiciona(maquina);
		
		return "maquina-success";
	}	
	
	//getters and setters
	
	

	public String getNome() {
		return nome;
	}

	public Integer getSetor2() {
		return setor2;
	}

	public void setSetor2(Integer setor2) {
		this.setor2 = setor2;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Setor getSetor() {
		return setor;
	}

	public void setSetor(Integer setorId) {
		this.setor = setor;
	}	
		
	public Integer getMaquinaId() {
		return maquinaId;
	}

	public void setMaquinaId(Integer maquinaId) {
		this.maquinaId = maquinaId;
	}

	public void setSetores(Collection<SelectItem> setores) {
		this.setores = setores;
	}

	public Collection<SelectItem> getSetores() {
		Collection<SelectItem> setoresSelect = new ArrayList<SelectItem>();
		
		Collection<Setor> setores = setorRepository.buscaTodos();
		for (Setor setor : setores) {
			SelectItem select = new SelectItem();
			select.setLabel(setor.getNome());
			select.setValue(setor.getId());
			setoresSelect.add(select);
		}
		
		return setoresSelect;
	}

	public String apagaMaquina() {
		Maquina maquina = new Maquina();
		
		maquina = repositorio.buscaPorId(maquinaId);
		
		repositorio.delete(maquina);

		return "maquina-success-rem";
	}
	
	public String alteraForm() {
		maquina = repositorio.buscaPorId(maquinaId);

		nome = maquina.getNome();
		descricao = maquina.getDescricao();
		setor = maquina.getSetor();

		return "maquina-form-alt";
	}

	
	public Collection<SelectItem> getMaquinas() {
		Collection<SelectItem> maquinasSelect = new ArrayList<SelectItem>();
		
		Collection<Maquina> maquinas = repositorio.buscaTodos();
		for (Maquina maquina : maquinas) {
			SelectItem select = new SelectItem();
			select.setLabel(maquina.getNome());
			select.setValue(maquina.getId());
			maquinasSelect.add(select);
		}
		
		return maquinasSelect;
	}

	public void setMaquinas(Collection<SelectItem> maquinas) {
		this.maquinas = maquinas;
	}

	public List<Maquina> getTabelaMaquinas() {
		tabelaMaquinas = (List<Maquina>) repositorio.buscaTodos();
		return tabelaMaquinas;
	}

	public void setTabelaMaquinas(List<Maquina> tabelaMaquinas) {
		this.tabelaMaquinas = tabelaMaquinas;
	}
	
	
}
